﻿namespace Nomo.UnityCoreModule
{
    /// <summary>
    /// 为 <see cref="string"/> 类的实例提供扩展方法。
    /// </summary>
    public static class StringExtension
    {
        /// <summary>
        /// 将以 "#" 开头的 HTML 颜色字符串转换为颜色值。
        /// </summary>
        /// <param name="value">以 "#" 开头的 HTML 颜色字符串。</param>
        /// <returns>如果转换成功，则返回转换后的值；否则返回 <see cref="UnityEngine.Color"/> 类型的默认值。</returns>
        public static UnityEngine.Color ToColor(this string value)
        {
            return UnityEngine.ColorUtility.TryParseHtmlString(value, out var color) ? color : default;
        }

        /// <summary>
        /// 将以 "#" 开头的 HTML 颜色字符串转换为颜色值。
        /// </summary>
        /// <param name="value">以 "#" 开头的 HTML 颜色字符串。</param>
        /// <param name="defaultValue">要在转换失败时返回的值。</param>
        /// <returns>如果转换成功，则返回转换后的值；否则返回 <paramref name="defaultValue"/> .</returns>
        public static UnityEngine.Color ToColor(this string value, UnityEngine.Color defaultValue)
        {
            return UnityEngine.ColorUtility.TryParseHtmlString(value, out var color) ? color : defaultValue;
        }
    }
}
